import Vue from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";
import "@/assets/styles/base.css"
import "@/assets/styles/el-reset.css"
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
//引入 iconfont
import "./assets/iconfont/iconfont.css"
//引入subMeny组件
import qfSubMenu from "qf-sub-menu"
Vue.use(qfSubMenu)//将qfSubMenu组件注入到全局
Vue.use(ElementUI);
//Vue.config.productionTip = false;
//按需引入
//import {Carousel,CarouselItem} from "element-ui"

//引入进度条
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'

//注册组件
//Vue.component('el-carousel',Carousel)
//Vue.component('el-carousel-item',CarouselItem)

//路由前置钩子（导航守卫）
router.beforeEach((to,from,next)=>{
  NProgress.start()
  //to去哪里，from从哪来，next放行
  //用户登录后，localStorage中有token,
  let token=localStorage.getItem("login-tokin");
  if(token){//有token
    if(store.state.menuList.length==0){
      //说明没有用户路由，触发action获取用户路由
      store.dispatch("FETCH_MENULIST")
      .then(()=>{
        next({path: to.path})//这里注意，next里面要传参数即要进入的页面的路由信息，因为next传参后，当前要进入的路由会被废止，转而进入参数对应的路由，虽然是同一个路由，这样做主要确保addRoutes生效了
      })
    }
    else{
      next()  //可以两边放行，login和home页面相互跳转 
    }
     
  }else {//没有token的时候，如果是注册页面或者是登录页面直接放行
    if(to.path==="/login"){
      next()
    }else{//访问的不是登录页，就要跳转到登录页
      next({path:"/login"})
    }

  }
})
//使用路由后置钩子使用面包屑
router.afterEach((to,from)=>{
  //console.log(to);
  let crumblist=to.matched.slice(1)
  //console.log(crumblist);
  store.commit("SET_CRUMBS",crumblist)
  NProgress.done()
})


import "./Utils/recursionRoutes"
new Vue({
  router,
  store,
  render: h => h(App)
}).$mount("#app");
